在這個充滿魔法的異世界中,我們的魔法能量來源——OpenAI API,有時會遇到一些流量限制的問題。當我們過於頻繁地呼喚魔法能量時,會收到429: 'Too Many Requests' 或 RateLimitError 的錯誤訊息。這是因為我們超出了API的流量限制。為了避免這種情況的發生,我們需要學會如何巧妙地應對流量限制。
流量限制是API的一種常見做法,主要有三個原因:
一種簡單的方法是使用自動重試請求。這意味著當遇到流量限制錯誤時,應該短暫休眠,然後重試未成功的請求。如果請求仍然不成功,則增加休眠時間並重複該過程。
這種方法有很多好處:
import openai
from tenacity import retry, stop_after_attempt, wait_random_exponential
@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
def completion_with_backoff(**kwargs):
return openai.Completion.create(**kwargs)
completion_with_backoff(model="text-davinci-002", prompt="Once upon a time,")
如果你的請求次數達到了上限,但仍有更多的 token 可用,你可以通過將多個任務批量到每個請求中來增加吞吐量。
import openai
num_stories = 10
prompts = ["Once upon a time,"] * num_stories
response = openai.Completion.create(model="curie", prompt=prompts, max_tokens=20)